package string;
/**
 *  String 不适合频发修改，内存开销大，性能低下，
 *  为了解决这个问题，java提供了一个用于修改字符串的API:StringBuilder
 *
 *  StringBuilder 内部维护一个可变的char数组，修改性能高，开销小，并且提供了使于修改
 *  字符串的相关曹组哟:增删改插等
 */
public class StringBuilderDemo1 {
    public static void main(String[] args) {
        String str = "好好学习java";

        //创建StringBuilder常见的构造器
        //StringBuilder builder  = new StringBuilder ();//内部默认表示一个字符串
        //创建StringBuilder 的同事讲给定的字符串内容复制一份到内部。
        StringBuilder builder = new StringBuilder(str);
        //

        /*
            增
            好好学习java
            V
            好好学习java，为了找个好工作！
            改
            v
            好好学习java，为了改变世界
         */
        builder.append(",为了找个好工作");
        System.out.println(str);
        System.out.println(builder);
        //将builder内部字符串从下标9开始到16(不含)的内容替换为给定的字符串
        builder.replace(9,16,"为了改变这个世界!");
        System.out.println(builder);
        /*
           删
           好好学习java,就是为了改变世界！
           V
           ,就是为了改变世界!
         */
        builder.delete(0,8);
        System.out.println(builder);
        /*
           插
           ,就是为了改变世界!
           V
           活着,就是为了改变世界!
         */
        builder.insert(1,"活着");

        //反转字符串内容
        builder.reverse();
        System.out.println(builder);
        /*
            StringBuilder 只是修改字符串的工具类。并非String本身，
            当使用String builder修改内容后,可以调用toString方法得到内部的字符串内容。
         */
        String line = builder.toString();
        System.out.println(line);
    }
}
